home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
-
- mac.h: Copyright (c) Kevin Hammond 1993. All rights reserved.
-
- Definitions for MacGofer.
-
- *****************************************************************************/
-
- #include "mac_hdrs.h"
-
- /**********************************************************************
-
- Standard C Definitions
-
- *********************************************************************/
-
- #include <stdio.h>
- #include <setjmp.h>
-
- #define TRUE 1
- #define FALSE 0
-
- #define NIL 0L
-
-
-
-
- /**********************************************************************
-
- Global Constants
-
- *********************************************************************/
-
- #define TE_REC_SIZE 32765L /* Maximum characters in a TE record */
-
-
-
- /**********************************************************************
-
- File Types
-
- *********************************************************************/
-
- #define GoferCreatorType 'GFER'
- #define GoferTextType 'TEXT'
- #define GoferProjectType 'GPrj'
- #define GoferPrefsType 'GPrf'
-
- #define GoferTextTypes "TEXT"
- #define GoferProjectTypes "GPrj"
-
-
- /**********************************************************************
-
- File Names
-
- *********************************************************************/
-
- #define GOFER_TEMP "Gofer Temp " /* The prefix for temporary files */
- #define DEFAULT_PRELUDE_NAME "Prelude" /* What the prelude's called, by default */
- #define DEFAULT_PREFS_NAME "Gofer Preferences" /* What the preference file's called, by default */
-
-
-
-
- /*********************************************************************
-
- File Information Resources
-
- *********************************************************************/
-
-
- #define GoferFileInfoType GoferCreatorType
- #define Res_GoferFileInfo 128
- #define FontInfoType 'EFNT'
- #define Res_FontInfo 1003
- #define MPWFileInfoType 'MPSR'
- #define Res_MPWFileInfo 1005
-
-
-
-
- /*********************************************************************
-
- Menus
-
- *********************************************************************/
-
- #define MENUBASE 256
-
- /* Apple Menu */
- #define MenuApple 0
- #define Res_Menu_Apple (MENUBASE+MenuApple)
- #define MItem_About_Gofer 1
-
- /* File Menu */
- #define MenuFile 1
- #define Res_Menu_File (MENUBASE+MenuFile)
- #define MItem_New 1
- #define MItem_Open 2
- #define MItem_Close 4
- #define MItem_Save 5
- #define MItem_Save_As 6
- #define MItem_Save_A_Copy 7
- #define MItem_Revert_to_Saved 8
- #define MItem_Delete 10
- #define MItem_Page_Setup 12
- #define MItem_Print 13
- #define MItem_Quit 15
-
- /* Edit Menu */
- #define MenuEdit 2
- #define Res_Menu_Edit (MENUBASE+MenuEdit)
- #define MItem_Undo 1
- #define MItem_Cut 3
- #define MItem_Copy 4
- #define MItem_Paste 5
- #define MItem_Clear 6
- #define MItem_Select_All 7
- #define MItem_Show_Clipboard 9
-
- /* Find Menu */
- #define MenuFind 3
- #define Res_Menu_Find (MENUBASE+MenuFind)
- #define MItem_Find_Replace 1
- #define MItem_Find_Again 2
- #define MItem_Find_Backwards 3
- #define MItem_Replace_Again 4
- #define MItem_Defn_Name 6
- #define MItem_Defn_Names 7
- #define MItem_Defn_Type 8
- #define MItem_Defn_Types 9
- #define MItem_Goto_Line 10
- #define MItem_Find_Error 11
-
- /* Font Menu */
- #define MenuFont 4
- #define Res_Menu_Font (MENUBASE+MenuFont)
- #define MItem_Font_9 1
- #define MItem_Font_10 2
- #define MItem_Font_12 3
- #define MItem_Font_14 4
- #define MItem_Font_Others 5
- #define MItem_Font_Base 7
-
- /* Options Menu */
- #define MenuOptions 5
- #define Res_Menu_Options (MENUBASE+MenuOptions)
- #define MItem_Statistics 1
- #define MItem_GCStats 2
- #define MItem_ExprTypes 3
- #define MItem_Literate 4
- #define MItem_HaskNums 5
- #define MItem_DictVals 6
- #define MItem_Trace 7
- #define MItem_AutoLoad 9
- #define MItem_Multitasking 10
- #define Option_Toggle_Limit MItem_Multitasking
- #define MItem_Heap 12
- #define MItem_Evidence 13
- #define MItem_Arcana 14
- #define MItem_Save_Prefs 16
-
- /* Windows Menu */
- #define MenuWindow 6
- #define Res_Menu_Window (MENUBASE+MenuWindow)
- #define MItem_Help 1
- #define MItem_Iconise 2
-
- /* Project Menu */
- #define MenuProject 7
- #define Res_Menu_Project (MENUBASE+MenuProject)
- #define MItem_Clear_Project 1
- #define MItem_Open_Project 2
- #define MItem_Save_Project 3
- #define MItem_Save_Project_As 4
- #define MItem_Load_File 6
- #define MItem_Unload_File 7
- #define MItem_Reload 8
- #define MItem_Reorder 9
- #define PreludeItem 11
-
-
-
- /*********************************************************************
-
- Windows
-
- *********************************************************************/
-
- #define Res_OpenWorksheet 256
- #define Res_OpenWindow 257
- #define Res_OpenClipboard 258
- #define Res_IconiseWindow 259
-
-
-
- /*********************************************************************
-
- Cursors
-
- *********************************************************************/
-
- #define gcCursor 1024
-
-
-
- /*********************************************************************
-
- Small Icons
-
- *********************************************************************/
-
- #define Res_IconUnlocked 258
- #define Res_IconVLocked 259
- #define Res_IconFLocked 260
- #define Res_IconLiterate 261
- #define Res_IconNonLiterate 262
- #define Res_IconHaskellNumbers 263
- #define Res_IconGoferNumbers 264
-
- #define SMALLICONWIDTH 16
-
-
-
- /*********************************************************************
-
- (Colour) Icons
-
- *********************************************************************/
-
- #define Res_IconWindow 128
-
-
-
- /*********************************************************************
-
- Controls
-
- *********************************************************************/
-
- #define Res_HScroll_bar 272
- #define Res_VScroll_bar 273
-
- #define SCROLLBARWIDTH 16
-
-
- /*********************************************************************
-
- Buttons
-
- *********************************************************************/
-
- #define OK 1
- #define CANCEL 2
- #define SCROLL 4
- #define YES 1
- #define NO 3
-
- #define FIND 1
- #define TYPE 3
- #define MODULES 4
- #define REPLACE_ALL 3
- #define DEFAULTS 3
-
-
- /*********************************************************************
-
- String IDs and Global Defns.
-
- *********************************************************************/
-
-
- #define Res_Version_String 128
- #define Res_MinSize_String 129
- #define Res_PreludeName_String 130
- #define Res_StackSize_String 131
- #define Res_PrefsName_String 132
-
- extern char *GoferVersionString;
- extern unsigned MinMemSize;
-
- /*********************************************************************
-
- Memory settings.
-
- *********************************************************************/
-
-
- #define DEFAULT_MIN_MEM_SIZE 700000
- #define DEFAULT_HEAP_PERCENTAGE 45
-
-
-
- /*********************************************************************
-
- String Lists IDs and indices
-
- *********************************************************************/
-
- #define Res_Action_Strings 128
- #define Res_File_Error_Strings 129
- #define Res_Complaint_Strings 130
-
- #define ActionOpen 1
- #define ActionSave 2
- #define ActionDelete 3
- #define ActionOpenProj 4
- #define ActionSaveProj 5
- #define ActionRestorePrefs 6
- #define ActionPrint 7
- #define ActionCreate 8
-
- #define StringFileLocked 1
- #define StringDiskLocked 2
- #define StringFileBusy 3
- #define StringFileError 4
- #define StringDiskError 5
- #define StringFileNotFound 6
- #define StringPermError 7
- #define StringUnknownError 8
-
- #define StringFileTooLarge 1
-
-
-
- /*********************************************************************
-
- Alerts
-
- *********************************************************************/
-
- #define Res_Debug_Alert 128
- #define Res_About_Gofer_Alert 129
- #define Res_Error_Alert 130
- #define Res_Help_Alert 131
- #define Res_Already_Evaluating 132
- #define Res_File_Error_Alert 134
- #define Res_Complaint_Alert 135
- #define Res_CantFindProjectFile_Alert 136
- #define Res_Kbd_Buffer_Full_Alert 137
- #define Res_AppleEvent_Failed_Alert 138
- #define Res_Low_Memory_Alert 139
- #define Res_HeapPCTooHigh_Alert 140
- #define Res_MemoryNotInitialised_Alert 141
-
-
-
- /*********************************************************************
-
- Dialogs
-
- *********************************************************************/
-
- #define Res_Dlg_Find 300
- #define Res_DItem_Backwards 4
- #define Res_DItem_Wraparound 5
- #define Res_DItem_Casesens 6
- #define Res_DItem_Finditem 7
- #define Res_DItem_Replaceitem 8
-
- #define Res_Dlg_Help 301
- #define Res_Dlg_Save 302
- #define Res_Dlg_Revert 303
-
- #define Res_Dlg_Unload 304
- #define Res_DItem_Unload 3
-
- #define Res_Dlg_Definitions 305
- #define Res_DItem_Definition 5
- #define Res_DItem_DefnHeader 6
-
- #define Res_Dlg_Other_Size 306
- #define Res_DItem_Other_Size 3
- #define Res_DItem_Size_Change 4
-
- #define Res_Dlg_Arcana 307
- #define Res_DItem_LitErrs 4
- #define Res_DItem_OptFns 5
- #define Res_DItem_FirstErr 6
- #define Res_DItem_TopLevelAmb 7
- #define Res_DItem_PattConf 8
- #define Res_DItem_OverSings 9
- #define Res_DItem_KindExpert 10
-
- #define Res_Dlg_Evidence 308
- #define Res_DItem_AnyEvidence 4
- #define Res_DItem_SilentFail 5
- #define Res_DItem_EvidDepth 6
-
- #define Res_Dlg_Memory 309
- #define Res_DItem_HeapSize 4
- #define Res_DItem_HeapPC 5
- #define Res_DItem_StackSize 6
- #define Res_DItem_Names 7
- #define Res_DItem_Classes 8
- #define Res_DItem_Instances 9
- #define Res_DItem_Addresses 10
- #define Res_DItem_Fixups 11
- #define Res_DItem_Tycons 12
- #define Res_DItem_Tyvars 13
- #define Res_DItem_Offsets 14
- #define Res_DItem_Selectors 15
- #define Res_DItem_Syntax 16
-
- #define Res_Dlg_Type 310
- #define Res_DItem_Type 3
- #define Res_DItem_TypeHeader 5
-
- #define Res_Dlg_Goto_Line 311
- #define Res_DItem_Goto 3
- #define Res_DItem_Goto_Change 4
-
- #define Res_Dlg_OkToSave 312
-
- /* Some Standard File Dialogs */
- #define Res_Dlg_Where_Prelude 320
- #define Res_Dlg_SFP_Project 402
- #define Res_Dlg_SFP_Prelude 403
- #define Res_Dlg_SFP_Delete 404
- #define Res_Dlg_SFP_Load 405
-
- /* The load multiple dialog */
- #define Res_Dlg_Load_Multiple 500
-
- /* The rearrange dialog */
- #define Res_Dlg_Rearrange 501
- #define Res_DItem_Move 1
- #define Res_DItem_Reload 3
- #define Res_DItem_Remove 4
- #define Res_DItem_OldList 5
- #define Res_DItem_OldScroll 6
- #define Res_DItem_NewList 7
- #define Res_DItem_NewScroll 8
-
-
- /*********************************************************************
-
- Key Definitions
-
- *********************************************************************/
-
- #define CMD_KEY_DOWN 256
-
- #define ENTERkey 0x03
- #define DELETEkey 0x08
- #define TABkey 0x09
- #define CLEARkey 0x1b
- #define ESC 0x1b
- #define LARROWkey 0x1c
- #define RARROWkey 0x1d
- #define UARROWkey 0x1e
- #define DARROWkey 0x1f
-
-
-
- /*********************************************************************
-
- Global Variables
-
- *********************************************************************/
-
- extern EventRecord myEvent;
- extern short systemVersion;
- extern Boolean WNEAvailable;
- extern Boolean HasAppleEvents;
- extern Boolean quit;
- extern OSErr err;
- extern SFReply Reply;
- extern FSSpec ReplySpec;
- extern int thefrontwindow;
-
- extern int findMyWindowName();
- extern Handle gethandle();
- extern ControlHandle getctlhandle();
-
- extern MenuHandle Menu_Apple, Menu_File, Menu_Edit, Menu_Find,
- Menu_Font, Menu_Option, Menu_Window, Menu_Project;
-
-
- extern int showStats, gcMessages, addType,
- coerceNumLiterals, showDicts, literateErrors,
- failOnError, useConformality, andorOptimise,
- catchAmbigs, anyEvidence, silentEvFail,
- overSingleton, kindExpert, literateScripts,
- traceEval;
-
- extern int MultiTasking, AutoLoad;
-
-
- extern int heapSize, num_stack, num_name, num_classes,
- num_insts, num_tycon, num_tyvars, num_addrs,
- num_files, num_modules, num_offsets, num_tuples,
- num_fixups, num_indexes, num_syntax, num_text,
- num_selects;
-
- extern int Num_stack, Num_name, Num_classes,
- Num_insts, Num_tycon, Num_tyvars, Num_addrs,
- Num_files, Num_modules, Num_offsets, Num_tuples,
- Num_fixups, Num_indexes, Num_syntax, Num_text,
- Num_selects;
-
- /*********************************************************************
-
- Window information.
-
- *********************************************************************/
-
- struct WindowStruct {
- int Flags; /* Whether an empty record, saved etc. */
- char * FileName; /* Name of the Associated File */
- WindowPtr theWindow; /* Window pointer */
- WindowPtr iconWindow; /* Window pointer for iconic version */
- TEHandle theTEHandle; /* TextEdit Handle */
- short TELock; /* Semaphore controlling lock of TEHandle */
- ControlHandle HScroll; /* Horizontal Scrollbar */
- ControlHandle VScroll; /* Vertical Scrollbar */
- short VRefNum; /* Working Directory Reference */
- long DirID; /* HFS Directory ID */
- long modtime; /* Last modified */
- };
-
- extern struct WindowStruct WindowRec[];
-
- #define scrap 0 /* Clipboard window reference */
- #define worksheet 1 /* Worksheet window reference */
-
-
- #define WSAVED 1 /* Bit 1 set if window saved */
- #define WOPEN 2 /* Bit 2 set if window open */
- #define WVIRGIN 4 /* Bit 3 set if window never saved */
- #define WFLOCKED 8 /* Bit 4 set if file locked */
- #define WVLOCKED 16 /* Bit 5 set if volume locked */
- #define WLOCKED (WFLOCKED|WVLOCKED)
- #define WICONIC 32 /* Bit 6 set if an icon window */
- #define WLITERATE 64 /* Bit 7 set if a literate window */
- #define WHNUM 128 /* Bit 8 set if a literate window */
- #define WVERS 9 /* Bits 9-17 indicate version */
- #define WVERSMASK 0x1F700 /* One bit per allowable version */
-
- #define OPEN(i) (FLAGS(i)&WOPEN)
- #define EMPTY(i) (!OPEN(i))
- #define SAVED(i) (FLAGS(i)&WSAVED)
- #define CHANGED(i) (!SAVED(i))
- #define VIRGIN(i) (FLAGS(i)&WVIRGIN)
- #define FLOCKED(i) (FLAGS(i)&WFLOCKED)
- #define VLOCKED(i) (FLAGS(i)&WVLOCKED)
- #define ICONIC(i) (FLAGS(i)&WICONIC)
- #define LITERATE(i) (FLAGS(i)&WLITERATE)
- #define HASKNUM(i) (FLAGS(i)&WHNUM)
-
- #define VERSION(i) ((FLAGS(i)&WVERSMASK)>>(WVERS-1))
-
- #define FILENAME(i) (WindowRec[i].FileName)
- #define WINDOW(i) (WindowRec[i].theWindow)
- #define ICONWINDOW(i) (WindowRec[i].iconWindow)
- #define TEHANDLE(i) (WindowRec[i].theTEHandle)
- #define TELOCK(i) (WindowRec[i].TELock)
- #define HSCROLL(i) (WindowRec[i].HScroll)
- #define VSCROLL(i) (WindowRec[i].VScroll)
- #define FLAGS(i) (WindowRec[i].Flags)
- #define VREFNUM(i) (WindowRec[i].VRefNum)
- #define DIRID(i) (WindowRec[i].DirID)
- #define MODTIME(i) (WindowRec[i].modtime)
-
- #define FAIL(s) FatalError(s)
-
- #define ILLEGAL_WINDOW (-1)
-
-
- /*********************************************************************
-
- File types, used by SF Dialogs
-
- *********************************************************************/
-
- extern char texttypelist[];
- extern char projtypelist[];
-
- extern OSType creator;
- extern OSType texttype;
- extern OSType projtype;
-
-
-
- /*********************************************************************
-
- System 7 AppleEvents handling
-
- *********************************************************************/
-
-
- #define SuspResEvt 0x01000000
- #define MouseMovedEvt 0xFA000000
-
- #if THINKC
- int mfprintf(FILE *, const char *, ...);
- int mprintf(const char *, ...);
- #endif
-
- #define kAEYes 'yes '
- #define kAENo 'no '
- #define kAEAskUser 'asku'
- #define keyAESaveOptions 'savo'
-
- /*********************************************************************
-
- Magic Memory locations (copied from SFMultiGet)
-
- *********************************************************************/
-
- #define SFSaveDisk 0x214 /* Volume number (negative) */
- #define CurDirStore 0x398 /* Current directory */
-
- /* For Gofer compatibility */
- typedef int Bool;